บทความ

กำลังแสดงโพสต์ที่มีป้ายกำกับ จาวา เบื้องลึก

Java Read file วิธีอ่าน File ด้วย BufferedReader แบบต่างๆ

Java Read file ผ่าน BufferedReader แบบง่ายๆ เลยก็คือ BufferedReader bf = new BufferedReader(new FileReader("C:/testdata.csv")) วิธีนี้จะเจอปัญหาว่า กรณีเป็นภาษาไทย จะได้เป็นภาษาต่างดาว และถ้าเราอยากจะเพิ่ม CharSet พวก UTF8 , TIS620 พวกนี้ต้องทำการส่งเพิ่มเข้าไปแบบนี้ครับ BufferedReader bf = new BufferedReader(new FileReader("C:/testdata.csv"), StandardCharsets.UTF_8)  คุ้นๆว่า Java Version เก่าๆ จะไม่รองรับนะ เพราะ constructor ของ BufferedReader จะไม่มีให้ส่ง CharSet เข้าไป ถ้า Java Version เก่าๆ หน่อยให้ใช้คำสั่งนี้ BufferedReader bf =new BufferedReader(new InputStreamReader(new FileInputStream("C://test.csv"), StandardCharsets.UTF_8))  เรียกได้ว่ายาวเป็นวา หรือจะให้สั้นหน่อยก็ใช้แบบนี้ครับ JDK 1.7 น่าจะใช้ได้อยู่นะแต่เก่ากว่านี้ไม่แน่ใจ BufferedReader bf =Files.newBufferedReader(Paths.get("C://test.csv"), StandardCharsets.UTF_8) ลองใช้งานกันดูนะครับ ส่วนขั้นตอนหลังจากอ่าน File ได้แล้วก็จะเอาไป วน loop ออกหรือเอาไปโยนเข้าคำสั่ง copy อะไรก็ว่ากัน...

วิธีการ Build Java แบบ ดั้งเดิม โดยใช้ lib จาก maven pom

รูปภาพ
 วันนี้เจอปัญหาว่าพยายามสร้าง maven project ผ่าน eclipse แล้ว download lib ไม่ผ่าน ปัญหาน่าจะเกิดจากติด proxy แหละแต่พยายามทำแล้วยังไงก็ไม่ได้ เลยจำเป็นต้องใช้ความรู้เก่าๆ โดยการสร้าง Java Project แบบธรรมดา แล้ว ทยอย add external jar เข้าไปเอง .... คิดเองว่าน่าจะง่าย T_T เพราะใน pom ก็มีอยู่เท่านี้เอง <dependency>   <groupId>org.apache.poi</groupId>   <artifactId>poi</artifactId>   <version>5.2.2</version> </dependency> <dependency>   <groupId>org.apache.poi</groupId>   <artifactId>poi-ooxml</artifactId>   <version>5.2.2</version> </dependency> แต่เอาเข้าจริงบอกเลยครับว่างาน ถึกมาก เจอ no class not found บานตะเกียง ทยอย load มาเรื่อยจนสุดท้ายแล้วไม่ไหวครับ ก็เลยเปลี่ยนวิธี ไป download jar  ผ่าน maven ด้วยคำสั่ง dependency:resolve mvn dependency:resolve วิธีนี้ก็ไม่ยากแค่เรา download maven มาแตก zip ออกแล้วก็ไปที่  D:\apache-maven-3.9.6-bin\...

Java get Inserted key from Oracle insert statement

 บ่อยครั้งที่เรา Insert Data ลง table ใน Oracle โดยใช้  Value ที่ create ขึ้นเองที่ฝั่ง Database เช่น พวก Sysdate , Sequence ต่างๆ เป็นต้น บางครั้งถ้าค่าเหล่านี้คือ ID ที่เราต้องการนำไปใช้ต่อจะเกิดปัญหาว่าทางฝั่ง Java ไม่รู้จักค่าเหล่านี้ วันนี้มีตัวอย่างการแก้ปัญหานี้มาฝากครับ ยกตัวอย่าง เราต้องการ Insert ค่าลง table ด้วย statement นี้ String query = "INSERT INTO test_table (test_id,test_name) VALUES (test_seq.NEXTVAL,'Test')"; เทคนิคที่ต้องทำเพิ่มเติมคือ ตอนสร้าง statement ให้กำหนด Key Field ด้วยตาม ตัวอย่าง PreparedStatement ps = connection.prepareStatement(query, new String [] { "test_id" });   หลังจากที่เรา execute update แล้วเราจะสามารถ get ค่า Key ผ่าน Result Set ได้เลยครับ ตามตัวอย่างด้านล่าง    ps.executeUpdate() ResultSet rs = ps.getGeneratedKeys();   if (null != rs && rs.next()) {         studentId = rs.getString(1);  }

JSP Comment JSTL แบบที่ไม่ให้ทำงานตอน View Source

ปรกติเวลาเรา Comment HTML เราก็จะ Comment ประมาณนี้ครับ <!--<c:out value= "${myVAR}" />-->   ซึ่งวิธีแบบนี้จริงๆก็สามารถทำงานได้แต่ว่ามันเป็นแค่การ Comment ไม่ให้แสดงผลใน HTML แต่ใน JSTL ยังคงทำงานอยู่นะ แล้วผลตอนที่เรา View Source ดูก็จะได้ประมาณนี้   <!--Test-->   มันไม่แสดงผลใน Output ก็จริงแต่ใน HTML ยังคงเห็นอยู่นั่นแสดงว่า JSTL เบื้องหลังยังคงทำงานครับ หากเราต้องการ Comment แบบไม่ให้ทำงานเลยให้ใช้คำสั่งนี้   <!-- <c:out value= "${myVar}" /> -->   แบบนี้ตอนที่ View Source ดูจะไม่เห็น Tag นี้แสดงใน HTML เลยครับ

ใช้ Java Gson อ่าน API coingecko เพื่อ feed ราคาเหรียญ

 ขอเอาตัวอย่าง Code แปะเลยละกันนะครับ อันนี้เอาไว้ดูกันลืมเฉยๆ อ่ะนะ แต่ถ้าเพื่อนๆ ดูก็น่าจะพอได้ไอเดียนะครับลองดูครับผม import java.io.BufferedReader; import java.io.InputStreamReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class CgcV2 {     public void executeCurl(String tokenID, String startDateStr,             String endDateStr) {         StringBuffer stringA = new StringBuffer();         try {             SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");             Date startDate = formatter.parse(startDateStr);          ...

Java convert date to unix timestamp

 วันนี้ลองเรียก AIP ของ coingecko.com แล้วพบว่าการ Query ราคาของเหรียญต่างๆ รับ Range ของ Date เป็น unix timestamp เดี๋ยวลองหาวิธีการแปลง date ใน java ให้เป็น unix timestamp และก็แปลงกลับจาก unix timestamp ให้เป็น date กันครับ             SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");             Date startDate = formatter.parse(startDateStr);             Date endDate = formatter.parse(endDateStr);             String unixStart = String.valueOf(startDate.getTime()).substring(0,10);             String unixEnd = String.valueOf(endDate.getTime()).substring(0,10);             String uri = "https://api.coingecko.com/api/v3/coins/" + tokenID              ...

ตัวอย่าง Java Base64 Encoding and Decoding

ตัวอย่าง Java Code ในการทำ Encode และ Decode   ด้วย Base64 เป็นการ Encode อย่างง่ายสุดนะครับ สำหรับข้อมูลที่ไม่ได้ต้องการปิดบังหรือ Privacy มาก เพราะว่า สามารถ Decode กลับมาเป็นข้อมูลจริง ได้ง่ายมากๆ import org.apache.commons.codec.binary.Base64; public class TestEncode {     /**      * @param args      */     public static void main(String[] args) {         String input="data_for_encode";         byte[] bytes = Base64.encodeBase64(input.getBytes());         System.out.println("Encode " + new String(bytes));         byte[] decodedBytes = Base64.decodeBase64(bytes);         System.out.println("Decode " + new String(decodedBytes));     } } ผลที่ได้จากการ Run ก็ตามรูปต้านล่างเลย Encode ZGF0YV9mb3JfZW5jb2Rl Decode data_for_encode ...

ตัวอย่าง log4j init

public class Log4jInit extends HttpServlet {     private static Logger logger = Logger.getLogger(Log4jInit.class);     /**      *      */     private static final long serialVersionUID = -6217487447859906018L;     private static final String CONTENT_TYPE = "text/html";     // Initialize global variables     @Override     public void init() throws ServletException {         File f = new File( getInitParameter("log4jPropsFile"));         if (!f.canRead()) {             throw new ServletException("Init log4j Exception");         }         logger.debug("Init log4j file = " + f.toString());         String log4jProp = f.toString();      ...

แนะนำ Aggregate Operations ใน Java 8 กับการเข้าถึง Collection แบบ Stream

บทความเกี่ยวกับ : แนะนำ Aggregate Operations ใน Java 8 มาถึงยุคของการจัดการ Data ใหญ่ๆกันแล้วสินะ แน่นอนว่า ที่ผ่านมาในโลกของ Java เราคงได้ใช้งาน Collection แบบต่างๆ กันมาแล้ว ไม่ว่าจะใช้งานอะไรมาบ้าง แต่หลักๆคงหนีไม่พ้นสองข้อ คือ   จะยัดข้อมูลลงไปยังไง และ จะเอาข้อมูลออกมายังไง  วันนี้เราจะเน้นอย่างหลังนะครับ คือการ ล้วงข้อมูลใน Collection นั่นเอง ก่อนอื่นขอแนะนำ Aggregate Operations ที่มาใหม่ใน Java 8 ที่เปลี่ยนรูปแบบการเข้าถึง  ข้อมูลใน Collection แบบที่เรียกได้ว่าคนที่เคยใช้ For ผ่าน Iterator นี่ต้องทำความเข้าใจเลยทีเดีย วันนี้จะให้ดูแค่เรื่องของการเขียน Code นะครับ ยังไม่รวมถึงที่มาที่ไปว่า Aggregate Operations มันดียังไง เร็วกว่ามั๊ย ?  จัดการกับ Data ได้เยอะกว่ามั๊ย ? มันต่างจาก Iterator แบบเดิมยังไง ? เก็บคำถามเหล่านี้ไว้ในใจก่อน เพราะถ้าเราไม่ลองใช้เราจะไม่รู้หรอกนะครับว่ามันดียังไง ? มาเริ่มกันเลย ยกตัวอย่างเรามี  Class ที่จะยัดลงใน Collection ดังนี้ public class Person { public enum Sex { MALE, FEMALE } Str...

แนะนำ try with resources Statement ใน Java 7 ช่วยให้เราคืน Resource ต่างๆได้เป็นระเบียบขึ้น

บทความเกี่ยวกับ : แนะนำ try with resources Statement ใน Java 7 การเขียนโปรแกรมไม่ว่าระบบงานอะไรก็ตาม จะเล็กจะใหญ่ ย่อมหนีไม่ค้นการเชื่อต่อกับ Resource ต่างๆ เช่นที่เห็นกันชัดๆ ก็พวก อ่านไฟล์  ต่อ Database เป็นต้น บ่อยครั้งนักที่เราต้องมานั่งปวดหัวกับการ คืน resource หรือการ close() อะไรต่างๆ ที่เราเรียกมาใช้ สมัยก่อนๆ มีปัญหาบ่อยจริงๆ นะ โดยเฉพาะ Database ที่เปิดแล้วลืม close ทำให้ connection เต็มเป็นต้น แต่สมัยนี้มี frame work อะไรต่างๆ มาช่วยให้เรา ทำงานได้ง่ายขึ้นเยอะ น้องๆ สมัยนี้อาจจะไม่เจอปัญหาเหล่านี้แล้วก็เป็นได้ T_T เอาเป็นว่าจะยังไงก็ตามวันนี้ของแนะนำ try with resources Statement นั่นคือคุณไม่ต้องคอยกังวลเรื่องการลืม close () หรือคืน resource ต่างๆ เพียงแค่หันมาใช้ try with resources Statement    ตามนี้ try{ //ใช้ resource // ใช้ resource // ในนี้ใช้ให้เต็มที่ ไม่ต้อง close() } //หลังจากหลุดแล้ว try มันจะ auto close() ให้เอง # เจ๋งมั๊ยล่ะครับ Concept ตามข้างต้น สามารถลองเขียน code test ง่ายๆ ได้นะครับ ด้วยการ implement  interf...

แนะนำ JSONObject เพื่อการส่งค่ากลับ View ใน format JSON

บทความเกี่ยวกับ : แนะนำ JSONObject เพื่อการส่งค่ากลับ View ใน format JSON วันนี้จะมาแนะนำ JSONObject เป็น Class ใน package : net.sf.json.* ครับ สามารถ download Lib มาใช้ได้เลย ใน jar file ที่ชื่อ : json-lib-xx-jdkxx.jar xx คือแล้วแต่ version อ่ะนะครับ หลายท่านคงเคยเจอปัญหาว่าเวลา Map Output ให้ออกไปใน รูปแบบ JSON กรณีที่โครงสร้างค่อนข้างซับซ้อน ถ้า Map เองก็คงลำบาก ตัวอย่างการใชช้ JSONObject JSONObject jsObj = new JSONObject(); jsObj.put("key","value") ; โดยในส่วนของ Value นั้นเราสามารถใส่ data ที่เป็น Object หรือ List ลงไปก็ได้ครับ แล้วตอนที่เราอยากได้ format  JSON ก็สั่ง toString() ออกมา jsObj.toString(); ลองไปใช้กันดูครับ

Java regular expression example

คำถามเกี่ยวกับ :ตัวอย่าง การใช้งาน Regular Expression ใน Java ก่อนอื่น import ตามนี้ครับ import java.util.regex.Matcher; import java.util.regex.Pattern; แล้วทดลอง code ตามนี้เลย            Pattern pattern;            Matcher matcher;                   String reqp = "^[a-z0-9_-]{3,15}$";            pattern = Pattern.compile(reqp);            matcher = pattern.matcher("abcd");            return name+" result: "+matcher.matches(); การใช้ Regular Expression จะช่วยให้ลดความซับซ้อนในการ ตรวจสอบค่าต่างๆ ได้ง่ายไม่ต้อง Chk if เยอะๆ เพียงแต่ ดูว่าค่าที่รับมา มัน Match กับ Pattern ที่เราต้องการหรือเปล่า ลองเอาไปใช้กันดูคร๊าบ

Java Connect MySQL ตัวอย่าง Dynamic Web Project บน Eclipse Part 2

รูปภาพ
บทความเกี่ยวกับ : Java Connect MySQL ตัวอย่าง Dynamic Web Project บน Eclipse Part 2 เอาล่ะหลังจากที่เรา Create Dynamic Web Project ไปแล้วใน Part ก่อนหน้านั้น Part นี้เราจะมาลอง Code แบบง่ายๆ กัน กับตัวอย่างการ Connect Database MySQL 1. ก่อนอื่นให้ไป Download MySQL JDBC Driver มาก่อน ตาม URL นี้เลยครับ เลือก JDBC Driver  น่ะเป็นของ Java 2. Download มาแล้วให้เอา Library ตามรูปนี้ไปใช้ Add ใน Project ครับ    ก๊อบไปวางในห้อง Lib ของ Project ครับ Path ตามด้านล่าง    3.  จากนั้นก็ลองเขียน Class Connect MySql ดูตามตัวอย่างด้านล่างครับ   อันนี้ผมใช้ main test ขำๆ น่ะ ยังไม่ได้ลอง เขียน JSP แล้ว Connect ผ่าน WebServer  เสร็จเพียงเท่านี้ Project เราก็สามารถ Connect MySQL ได้แล้วล่ะครับ  ไว้ใน Part ต่อไปจะเอาวิธีการใช้งาน มาฝากอีก

Java Connect MySQL ตัวอย่าง Dynamic Web Project บน Eclipse Part 1

รูปภาพ
บทความเกี่ยวกับ : Java Connect MySQL ตัวอย่าง Dynamic Web Project บน Eclipse Part 1 วันนี้จะมาสอนวิธีการสร้าง Dynamic Web Project บน Eclipse Version แบบว่า บ้านๆ เลยนะครับ พร้อมตัวอย่างการ connect database MYSQL สำหรับผู้เริ่มต้น 1. ก่อนอื่น เปิด Eclipse ขึ้นมาแล้ว ก็ File ->New->Dynamic Web Project   2. จากนั้นก็ใส่ชื่อ Project เข้าไปครับ   3. กำหนด Context ครับเพื่อที่จะเป็น URL ตอนที่เราเข้าเว็บ ส่วนที่เหลือห้อง src ก็ตามเดิมครับ โดยมากตรงนี้มันจะ default ตามชื่อ project ที่เราตั้งอยู่แล้ว 4. เสร็จแล้วก็จะได้หน้าตา ของ Web Project ตามด้านล่างครับ ขั้นตอนของการ Create Project ก็เสร็จสิ้นเพียงเท่านี้ครับต่อไปเป็นตัวอย่าง Code ในการ Connect Database MySQL เดี๋ยวจะเล่าให้ฟังใน Part 2  นะครับ

Java read file การเขียน Java เพื่อ อ่านไฟล์ในแบบต่างๆ

บทความเกี่ยวกับ : Java read file การเขียน Java เพื่อ อ่านไฟล์ในแบบต่างๆ การเขียนโปรแกรม Java เพื่อ อ่านไฟล์นั้น ถือว่าเป็นเรื่องที่ค่อนข้่างจะต้องถ่ายข้อมูลหลายขั้นตอนพอสมควร  เดี๋ยวจะยกตัวอย่างการ เขียนโปรแกรมเพื่อ อ่านไฟล์ .txt แบบสั้นๆ ง่ายๆ ให้ดูนะครับ import java.io.*; class ReadFileExample {  public static void main(String args[])   {   try{  // อ่านไฟล์ ใส่ path ให้ถูกต้องนะครับ ระบุ path เต็มไปเลยก็ได้   FileInputStream is = new FileInputStream("file.txt");   DataInputStream ds = new DataInputStream(is);   BufferedReader br = new BufferedReader(new InputStreamReader(ds)); //ทำสาม step นี้ให้เสร็จครับจนได้ BufferedReader แล้วก็เอามาวน Loop ออกได้เลย   String strLine;   while ((strLine = br.readLine()) != null)   {       System.out.println (strLine);   }   ds.close();     }catch (Exception e){   e.getMessage();   }   } } ขั้นตอน ผมจะท่องไว้...

Java Shorthand เช็ค if else แบบกระชับ ได้เรื่อง

บทความเกี่ยวกับ : Java Shorthand เช็ค if else แบบกระชับ ได้เรื่อง เพื่อนๆ คงจะคุ้นเคยกับการเช็คเงื่อนไข if else ด้วย statement แบบ classic แบบนี้ if(expression) {    // do some thing    // do some thing }else{   // do some thing   // do some thing } จาก Code แบบ classic จะเห็นว่ามันค่อนข้างจะยาวแบบนี้จะเหมาะกับการทำงานใน if ที่หลายๆ คำสั่ง ประมาณว่า if(expression) {    // do some thing    // do some thing    // do some thing   // do some thing }else{   // do some thing   // do some thing   // do some thing } แต่ถ้าเกิดเราต้องการทำเพียงแค่นี้ if(expression) {    // do some thing }else{   // do some thing } แบบว่า do some thing แค่ statement เดียว ผมขอแนะนำให้รู้จัก Java Shorthand กับ statement สั้นๆ ง่ายๆ ได้เรื่อง......... แบบนี้ เงื่อนไข ? ถ้าเป็นจริงทำตรงนี้ : ถ้าไม่จริงทำตรงนี้ (expression) ? (true action) : (false actio...

java.lang.UnsupportedClassVersionError: Bad version number in .class file Error ตัวนี้เล่นเอาซะงง

บทความเกี่ยวกับ : java.lang.UnsupportedClassVersionError: Bad version number in .class file Error ตัวนี้เล่นเอาซะงง java.lang.UnsupportedClassVersionError: Bad version number in .class file Error ตัวนี้เล่นเอาซะงง วันนี้อยู่ๆ ก็งานเข้าซะงั้นเมื่อโปรแกรมที่ Run ได้มาตลอดอยู่ๆ ก็มีปัญหา เหตุเกิดเนื่องจากว่ามี Lib ที่ Export มาจาก JDK ต่าง Version กันแค่นั้นเอง สุดยอด ไม่น่าเชื่อว่ามันจะส่งผลได้ขนาดนี้ Server ใช้ jdk version 1.5  แต่มี jar บางตัวที่น้อง export ออกมาจากเครื่อง dev ที่เป็น jdk version สูงกว่า ผลที่ได้ก็เจอ error ดังกล่าวข้างต้นแหละครับ ทางแก้ยังไม่ได้ดูละเอียดแต่ตอนนี้แก้ปัญหาเฉพาะหน้าด้วยการ export jar ใหม่ด้วย jdk 1.5 ก็ถือว่าโอเคครับ ผมคุ้นๆว่าตอน export jar หรือตอน compile น่าจะมี set ได้ว่าจะให้ target ออกไปเป็น version อะไร เดี๋ยวจะลองให้ดูอีกทีนะคร้าบ

Java Call PLSQL Oracle Function และ Store procedure

บทความเกี่ยวกับ : Java Call PLSQL Oracle Function และ Store procedure ตัวอย่างการเขียนโปรแกรมด้วยภาษา Java เพื่อเรียกใช้งาน PLSQL นั้นแตกต่างจากการเขียนเพื่อ Execute SQL statement ธรรมดาอยูนิดหน่อยตามตัวอย่างครับ CallableStatement call=null; ResultSet rs=null; try {                                    call = con.prepareCall("{call TEST_PACK.TEST_PROC(?,?,?) }");             call.registerOutParameter(1, oracle.jdbc.driver.OracleTypes.CURSOR);             call.setString(2,"10001");             call.setString(3,"TEST");                        call.execute();           ...

Java jar , war,ear นามสกุลไฟล์สำหรับ Deploy ในรูปแบบต่างๆของ Java

บทความเกี่ยวกับ : Java jar , war,ear นามสกุลไฟล์สำหรับ Deploy ในรูปแบบต่างๆของ Java พูดถึงไฟล์ ดอท .jar  แล้วหลายคนคงพอรู้จัก แต่ถ้าบอกว่า ดอท .war  , ดอท .ear แล้วคงจะได้ยินกันใหนหมู่ Enterprise ที่พัฒนากันในรูปแบบ Web Application เนื่องจาก Source ในภาษา Java จะถูก Compile ออกมาเป็น Class มากมาย ทำให้ไม่สะดวกเวลาเอาไปใช้งานจึงทำให้เกิด zip Format ออกมาเป็นนามสกุลต่างๆ เช่น - ไฟล์ java  .jar   หมายถึง Java Library ทั่วไปที่ Compile แล้ว Pack หรือ Zip ไว้ในรูปแบบของ jar file - ไฟล์ Web Application .war เ็ป็น Zip ไฟล์ที่เกิดจากการ Pack Code ตามโครงสร้าของ Web Application  - ไฟล์ Enterprise Application  .ear เป็นไฟล์ที่ใหญ่ที่สุดที่อาจรวม หลายๆ war ไว้ข้างใน หรือ หลาย application ไว้ข้างใน ไฟล์ .ear เกิดขึ้นมาพร้อมๆ กับ ยุคของ EJB ที่มีการกำหนด Deployment Format ไว้ ไฟล์แต่ละนามสกุลก็จะมีโครงสร้างภายในแตกต่างกันและถูกนำไปใช้งานแตกต่างกันไป ไว้บทความต่อไปค่อยมาลงลึกทีละ Format กัน

Java XML Read and Write XML บนภาษา Java ด้วย jdom

บทความเกี่ยวกับ : Java XML Read and Write XML บนภาษา Java ด้วย jdom XML เป็นโครงสร้างภาษาในรูปแบบ Tag ที่ปัจจุบันนำมาใช้อย่างแพร่หลายไม่ว่าจะเป็นพวก Configuration หรือ Data Format ต่างๆ ทำให้เราเลี่ยงไม่ได้ที่จะต้องมีการเขียนโปรแกรมเพื่อ Read หรือ Write เอกสาร XML ตัวอย่างต่อไปนี้จะเป็นการใช้ Jdom ซึ่งเป็น Library ที่สามารถ download มาใช้ได้แบบฟรีๆ ยกตัวอย่างเรามี XML ที่เป็นโครงสร้างง่ายๆ ชื่อ tets.xml ตามนี้ <XML>     <ELM1>Value</ELM1> </XML> ก่อนอื่นทำการสร้าง Document ด้วยคำสั่งนี้ Document d = new SAXBuilder().build("c:\test.xml"); ด้วยคำสั่งนี้เราจะได้ Object ของ Documetn มา ซึ่งเราสามารถนำ Object นี้มาเล่นต่อได้ครับเช่น Element root=doc.getRootElement(); จะทำให้เราได้ Object ของ Root Element ออกมา หากต้องการ วน Loop ทุก Element ออกมาสามารถใช้ Iterator ช่วยได้ครับ เช่น Iterator itr = root.getChildren().iterator(); method getChildren() จะ return list ของ Element ลูกที่อยู่ในระดับถัดมา 1 ระดับจาก Element ท...